package com.ruoyi.system.mapper;

import java.util.List;

import com.ruoyi.system.domain.DishMaterial;
import com.ruoyi.system.domain.dto.DishMaterialQtyDTO;
import com.ruoyi.system.domain.vo.MaterialVO;
import com.ruoyi.system.domain.vo.ReportDishMaterialVO;
import org.apache.ibatis.annotations.Param;

/**
 * 菜品原料Mapper接口
 *
 * @author ruoyi
 * @date 2025-03-22
 */
public interface DishMaterialMapper {
    /**
     * 查询菜品原料
     *
     * @param id 菜品原料主键
     * @return 菜品原料
     */
    public DishMaterial selectDishMaterialById(String id);

    /**
     * 查询菜品原料列表
     *
     * @param
     * @return 菜品原料集合
     */
    public List<MaterialVO> selectDishMaterialList(@Param("dishId") String dishId);

    List<ReportDishMaterialVO> selectDishMaterialListByDishIds(@Param("dishIdList") List<Integer> dishIdList);

    /**
     * 新增菜品原料
     *
     * @param dishMaterial 菜品原料
     * @return 结果
     */
    public int insertDishMaterial(DishMaterial dishMaterial);

    int insertDishMaterialBatch(@Param("list") List<DishMaterial> list);

    /**
     * 修改菜品原料
     *
     * @param dishMaterial 菜品原料
     * @return 结果
     */
    public int updateDishMaterial(DishMaterial dishMaterial);

    /**
     * 删除菜品原料
     *
     * @param id 菜品原料主键
     * @return 结果
     */
    public int deleteDishMaterialById(String id);

    /**
     * 批量删除菜品原料
     *
     * @param ids 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteDishMaterialByIds(String[] ids);

    void deleteByDishAndMaterials(@Param("dishId") Integer dishId, @Param("materialIdList") List<Integer> materialIdList);

    void updateQuantityBatch(List<DishMaterialQtyDTO> updateQtyList);

    void deleteAllDishMaterial();
}
